﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VehicleMaintenance.Framework;
using System.Runtime.InteropServices;

namespace VehicleMaintenance.Systems
{
	public partial class AlertForm : BaseForm
	{
		[DllImport("user32.dll")]
		public static extern bool AnimateWindow(IntPtr hwnd, int dateTime, int dwFlags);//以动画效果绘制窗体

		#region 窗体显示参数
		private int currentX;//横坐标 

		private int currentY;//纵坐标 

		private int screenHeight;//屏幕高度 

		private int screenWidth;//屏幕宽度 

		int AW_ACTIVE = 0x20000; //激活窗口，在使用了AW_HIDE标志后不要使用这个标志 

		int AW_HIDE = 0x10000;//隐藏窗口 

		int AW_BLEND = 0x80000;// 使用淡入淡出效果 

		int AW_SLIDE = 0x40000;//使用滑动类型动画效果，默认为滚动动画类型，当使用AW_CENTER标志时，这个标志就被忽略 

		int AW_CENTER = 0x0010;//若使用了AW_HIDE标志，则使窗口向内重叠；否则向外扩展 

		int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 

		int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 

		int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 

		int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 
		#endregion

		public AlertForm()
		{
			InitializeComponent();
		}

		/// <summary>
		/// 初始化提示框
		/// </summary>
		/// <param name="strTitle">标题</param>
		/// <param name="strContent">内容</param>
		public AlertForm(string strTitle ,string strContent)
		{
			InitializeComponent();

			lbTitle.Text = strTitle;
			lbContent.Text = strContent;
		}

		private void AlertForm_Load(object sender, EventArgs e)
		{
			Rectangle rect = Screen.PrimaryScreen.WorkingArea;//获取工作区

			screenHeight = rect.Height;//获取工作区的高度

			screenWidth = rect.Width;//获取工作区的宽度

			currentX = screenWidth - this.Width; //获取绘制窗体的横坐标

			currentY = screenHeight - this.Height;//获取绘制窗体的纵坐标

			this.Location = new System.Drawing.Point(currentX, currentY);

			AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_VER_NEGATIVE);
			timer1.Enabled = true;
		}

		private void timer1_Tick(object sender, EventArgs e)
		{
			timer2.Enabled = true;
		}

		private void timer2_Tick(object sender, EventArgs e)
		{
			this.Opacity = this.Opacity - 0.05;
			if (this.Opacity == 0)
				this.Close();
		}

		private void AlertForm_MouseEnter(object sender, EventArgs e)
		{
			timer2.Enabled = false;
			timer1.Enabled = false;
			this.Opacity = 1;
		}

		private void AlertForm_MouseLeave(object sender, EventArgs e)
		{
			timer1.Enabled = true;
		}
	}
}
